package com.mcxx.modules.common.service.impl;

import com.mcxx.common.exception.BizException;
import com.mcxx.modules.common.service.StatisticService;
import com.mcxx.modules.statistics.dto.StatisticDTO;
import com.mcxx.modules.statistics.param.StatisticParam;
import com.mcxx.modules.statistics.service.read.StatisticReadService;
import com.mcxx.modules.system.entity.AreaSalvationEntity;
import com.mcxx.util.Constant;
import com.mcxx.util.FailureCode;
import com.yinhai.ta404.component.org.orguser.area.entity.TaAreaPo;
import com.yinhai.ta404.core.security.vo.UserAccountVo;
import com.yinhai.ta404.core.transaction.annotation.TaTransactional;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;


@Slf4j
@Service
@TaTransactional
public class DynamicFamilyWatchServiceImpl extends StatisticService {


    @Autowired
    private StatisticReadService statisticReadService;

    @Override
    public List<? extends StatisticDTO> getStatistic(StatisticParam param, UserAccountVo accountVo, String bizType) {
        List<TaAreaPo> taAreaPos = new ArrayList<TaAreaPo>();
        List<Integer> levels = new ArrayList<Integer>();
        String name = super.commonStatisticStart(param, accountVo, taAreaPos, levels);
        if(taAreaPos.isEmpty()){
            throw new BizException(FailureCode.ERR_100002);
        }
        TaAreaPo curTaAreaPo = taAreaPos.get(0);

        String validCode = areaUtil.getValidCode(curTaAreaPo.getAreaCode(), curTaAreaPo.getAreaLevel());
        Integer validCodeLen = areaUtil.getValidCodeLen(curTaAreaPo.getAreaLevel() + 1);
        int areaCodeLength = 12;
        if (curTaAreaPo.getAreaLevel() == Constant.AreaLevel.COMMUNITY) {
            areaCodeLength = 15;
        }
        String zeros = String.join("", Collections.nCopies(areaCodeLength - validCodeLen, "0"));

        return new ArrayList<>();
    }

    @Override
    public void fillSalvation(StatisticDTO dto, List<String> standards, List<AreaSalvationEntity> salivations) {

    }
}
